<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>PHP Data Objects</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/PHP_Data_Objects"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-PHP_Data_Objects rootpage-PHP_Data_Objects skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">PHP Data Objects</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<p><b>PHP Data Objects</b> (<b>PDO</b>) est une extension définissant l'interface pour accéder à une <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a> avec <a href="PHP%3A_Hypertext_Preprocessor" class="mw-redirect" title="PHP: Hypertext Preprocessor">PHP</a>.
</p><p>Elle est <a href="Programmation_orient%C3%A9e_objet" title="Programmation orientée objet">orientée objet</a>, la classe s’appelant PDO. PDO constitue une couche d'abstraction qui intervient entre l'application PHP et un système de gestion de base de données (<a href="Syst%C3%A8me_de_gestion_de_base_de_donn%C3%A9es" title="Système de gestion de base de données">SGDB</a>) tel que <a href="MySQL" title="MySQL">MySQL</a>, <a href="PostgreSQL" title="PostgreSQL">PostgreSQL</a> ou MariaDB par exemple. La couche d'abstraction permet de séparer le traitement de la base de données proprement dite. PDO facilite donc la migration vers un autre <a href="Syst%C3%A8me_de_gestion_de_base_de_donn%C3%A9es" title="Système de gestion de base de données">SGBD</a> puisqu'il n'est plus nécessaire de changer le code déjà développé. Il faut seulement changer les <a href="Param%C3%A8tre_(programmation_informatique)" title="Paramètre (programmation informatique)">arguments</a> de la méthode envoyés au <a href="Constructeur_(programmation)" title="Constructeur (programmation)">constructeur</a>.
</p><p>Pour récupérer les enregistrements d’une table de la base de données, la procédure classique en PHP consiste à parcourir cette table ligne par ligne en procédant à des aller-retour entre l'application PHP et le <a href="Syst%C3%A8me_de_gestion_de_base_de_donn%C3%A9es" title="Système de gestion de base de données">SGBD</a>. Ceci risque d’alourdir le traitement surtout si les deux serveurs sont installés chacun sur une machine différente. PDO corrige ce problème en permettant de récupérer en une seule reprise tous les enregistrements de la table sous forme d’une variable PHP de type tableau à deux dimensions ce qui réduit le temps de traitement.
</p>
<div class="mw-heading mw-heading2"><h2 id="Compatibilité_avec_les_versions_de_PHP"><span id="Compatibilit.C3.A9_avec_les_versions_de_PHP"></span>Compatibilité avec les versions de PHP</h2></div>
<p>PDO est fourni avec PHP 5.1. Elle est aussi disponible en tant qu'extension PECL pour PHP 5.0, mais ne fonctionne pas avec les versions antérieures de PHP car elle nécessite les fonctionnalités <a href="Programmation_orient%C3%A9e_objet" title="Programmation orientée objet">orientées objet</a> de PHP 5. L'extension n'est pas activée avant PHP 5.1.0<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> par défaut, il faut donc décommenter la ligne <code>php_pdo.dll</code> dans php.ini. Pour activer le SGBD, il faut ensuite écrire : <code>extension=php_pdo_<i>[SGBD utilisé]</i>.dll</code>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Pilotes_disponibles">Pilotes disponibles</h2></div>
<p>De nombreux pilotes sont disponibles pour PDO. On trouve la liste à jour sur le site php.net<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.
</p>
<ul><li><a href="4e_Dimension_(langage)" title="4e Dimension (langage)">4D</a> ;</li>
<li>CUBRID ;</li>
<li><a href="Firebird_(base_de_donn%C3%A9es)" title="Firebird (base de données)">Firebird</a> ;</li>
<li><a href="IBM_DB2" class="mw-redirect" title="IBM DB2">IBM DB2</a> (avec ou sans <a href="ODBC" class="mw-redirect" title="ODBC">ODBC</a>) ;</li>
<li><a href="Informix" title="Informix">Informix</a> ;</li>
<li><a href="Microsoft_SQL_Server" title="Microsoft SQL Server">Microsoft SQL Server</a> ;</li>
<li><a href="MySQL" title="MySQL">MySQL</a> ;</li>
<li><a href="Oracle_Database" title="Oracle Database">Oracle Database</a> ;</li>
<li><a href="PostgreSQL" title="PostgreSQL">PostgreSQL</a> ;</li>
<li><a href="SQLite" title="SQLite">SQLite</a>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Classes">Classes</h2></div>
<p>PDO comporte trois classes :
</p>
<ul><li>la classe <code>PDO</code>, qui représente une connexion à la base de données ;</li>
<li>la classe <code>PDOStatement</code>, qui représente d'une part une requête SQL préparée et d'autre part le jeu de résultats de la requête une fois qu'elle est exécutée. Cette classe offre des méthodes de parcours et de comptage du jeu de résultats ;</li>
<li>la classe <code>PDOException</code>, qui représente une erreur émise par PDO.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Accès_à_la_base_de_données"><span id="Acc.C3.A8s_.C3.A0_la_base_de_donn.C3.A9es"></span>Accès à la base de données</h2></div>
<p>L'accès à la base de données se fait en instanciant un objet de la classe PDO. Les paramètres à indiquer au constructeur sont :
</p>
<ul><li>la source de la base de données ;</li>
<li>l'identifiant et le mot de passe.</li></ul>
<p>Pour accéder à une base de données MySQL de nom <i>ma_bdd</i> accessible sur le port <i>mon_port</i> du serveur <i>mon_serveur</i> avec l'identifiant <i>mon_identifiant</i> associé au mot de passe <i>mon_mdp</i>, le code sera le suivant :
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$connexion</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">PDO</span><span class="p">(</span><span class="s2">"mysql:host=mon_serveur;dbname=ma_bdd;port=mon_port"</span><span class="p">,</span> <span class="s2">"mon_identifiant"</span><span class="p">,</span> <span class="s2">"mon_mdp"</span><span class="p">);</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Passage_de_requêtes_SQL"><span id="Passage_de_requ.C3.AAtes_SQL"></span>Passage de requêtes SQL</h2></div>
<p>Des méthodes de la classe PDO permettent de passer différentes requêtes SQL à l'objet récupéré lors de la connexion.
La méthode <code>PDO::exec()</code> permet de passer et exécuter une requête SQL de type INSERT, UPDATE et DELETE. Elle retourne le nombre de lignes affectées par la requête.
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$requete</span> <span class="o">=</span> <span class="s2">"DELETE FROM ma_table WHERE mon_champ = ma_valeur"</span><span class="p">;</span>
<span class="nv">$compteur</span> <span class="o">=</span> <span class="nv">$connexion</span><span class="o">-></span><span class="na">exec</span><span class="p">(</span><span class="nv">$requete</span><span class="p">);</span>
</pre></div>
<p>La méthode <code>PDO::query()</code> permet de passer et exécuter une requête SQL de type SELECT. Elle retourne le jeu de résultats sous forme d'objet <code>PDOStatement</code>.
</p>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$requete</span> <span class="o">=</span> <span class="s2">"SELECT * FROM ma_table WHERE mon_champ = ma_valeur"</span>
<span class="nv">$resultats</span> <span class="o">=</span> <span class="nv">$connexion</span><span class="o">-></span><span class="na">query</span><span class="p">(</span><span class="nv">$requete</span><span class="p">);</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Passage_de_requêtes_SQL_préparées"><span id="Passage_de_requ.C3.AAtes_SQL_pr.C3.A9par.C3.A9es"></span>Passage de requêtes SQL préparées</h2></div>
<p>La méthode <code>PDO::prepare()</code> permet de préparer une requête SQL pouvant contenir zéro ou plusieurs emplacements anonymes <code>?</code> ou nommés <code>:nom</code>. Les deux types d'emplacements ne peuvent être mélangés dans la même requête. Elle retourne une requête SQL préparée sous forme d'objet <code>PDOStatement</code>.
</p><p>La méthode <code>PDOStatement::bindValue()</code> permet d'associer <i>par valeur</i> les emplacements anonymes ou nommés de la requête aux valeurs ou variables passées en paramètres. Elle retourne TRUE en cas de succès et FALSE en cas d'erreur.
</p><p>La méthode <code>PDOStatement::bindParam()</code> permet d'associer <i>par référence</i> les emplacements anonymes ou nommés de la requête aux variables passées en paramètres (les valeurs sont interdites). Elle retourne TRUE en cas de succès et FALSE en cas d'erreur.
</p><p>La méthode <code>PDOStatement::execute()</code> permet d'associer <i>par valeur</i> les emplacements anonymes de la requête aux valeurs ou variables du tableau passé en paramètre, ou d'associer les emplacements nommés de la requête aux valeurs ou variables du tableau associatif passé en paramètre, et exécute la requête. Elle retourne TRUE en cas de succès et FALSE en cas d'erreur.
</p><p>La méthode <code>PDO::prepare()</code> compile le modèle de requête (requête paramétrée) et la stocke dans un cache sans l'exécuter. Par la suite, la méthode <code>PDOStatement::execute()</code> lie les valeurs fournies aux paramètres du modèle de requête et exécute la requête formée. Le premier avantage des requêtes préparées tient dans l'impossibilité pour des hackers d'<a href="Injection_SQL" title="Injection SQL">injecter</a> du code malicieux via des paramètres, puisque seul le modèle de la requête est compilé. Le second avantage réside dans le gain de performance lorsqu'un modèle de requête doit être exécuté plusieurs fois avec différentes valeurs de paramètres, car le modèle de requête n'est compilé qu'une seule fois.
</p>
<dl><dt>Exemples</dt></dl>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$requete</span> <span class="o">=</span> <span class="s2">"SELECT mon_champ FROM ma_table WHERE mon_champ_1 = ? AND mon_champ_2 = ?"</span><span class="p">;</span>
<span class="nv">$resultats</span> <span class="o">=</span> <span class="nv">$connexion</span><span class="o">-></span><span class="na">prepare</span><span class="p">(</span><span class="nv">$requete</span><span class="p">);</span>
<span class="nv">$resultats</span><span class="o">-></span><span class="na">execute</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">13</span><span class="p">));</span>
</pre></div>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$requete</span> <span class="o">=</span> <span class="s2">"SELECT mon_champ FROM ma_table WHERE mon_champ_1 = ? AND mon_champ_2 = ?"</span><span class="p">;</span>
<span class="nv">$resultats</span> <span class="o">=</span> <span class="nv">$connexion</span><span class="o">-></span><span class="na">prepare</span><span class="p">(</span><span class="nv">$requete</span><span class="p">);</span>
<span class="nv">$resultats</span><span class="o">-></span><span class="na">bindValue</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<span class="nv">$resultats</span><span class="o">-></span><span class="na">bindValue</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">13</span><span class="p">);</span>
<span class="nv">$resultats</span><span class="o">-></span><span class="na">execute</span><span class="p">();</span>
</pre></div>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$requete</span> <span class="o">=</span> <span class="s2">"SELECT mon_champ FROM ma_table WHERE mon_champ_1 = :mon_marqueur_1 AND mon_champ_2 = :mon_marqueur_2"</span><span class="p">;</span>
<span class="nv">$resultats</span> <span class="o">=</span> <span class="nv">$connexion</span><span class="o">-></span><span class="na">prepare</span><span class="p">(</span><span class="nv">$requete</span><span class="p">);</span>
<span class="nv">$resultats</span><span class="o">-></span><span class="na">execute</span><span class="p">(</span><span class="k">array</span><span class="p">(</span><span class="s2">":mon_marqueur_1"</span> <span class="o">=></span> <span class="mi">5</span><span class="p">,</span> <span class="s2">":mon_marqueur_2"</span> <span class="o">=></span> <span class="mi">13</span><span class="p">));</span>
</pre></div>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$requete</span> <span class="o">=</span> <span class="s2">"SELECT mon_champ FROM ma_table WHERE mon_champ_1 = :mon_marqueur_1 AND mon_champ_2 = :mon_marqueur_2"</span><span class="p">;</span>
<span class="nv">$resultats</span> <span class="o">=</span> <span class="nv">$connexion</span><span class="o">-></span><span class="na">prepare</span><span class="p">(</span><span class="nv">$requete</span><span class="p">);</span>
<span class="nv">$resultats</span><span class="o">-></span><span class="na">bindValue</span><span class="p">(</span><span class="s2">":mon_marqueur_1"</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
<span class="nv">$resultats</span><span class="o">-></span><span class="na">bindValue</span><span class="p">(</span><span class="s2">":mon_marqueur_2"</span><span class="p">,</span> <span class="mi">13</span><span class="p">);</span>
<span class="nv">$resultats</span><span class="o">-></span><span class="na">execute</span><span class="p">();</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Lecture_du_jeu_de_résultats"><span id="Lecture_du_jeu_de_r.C3.A9sultats"></span>Lecture du jeu de résultats</h2></div>
<p>La méthode <code>PDOStatement::fetch()</code> de la classe PDOStatment permet de rendre exploitable l'objet récupéré lors de la connexion après lui avoir passé différentes requêtes SQL.
</p>
<ul><li><code>PDOStatement::fetch()</code> récupère la ligne suivante du jeu de résultats PDO.</li>
<li><code>PDOStatement::fetchAll()</code> retourne un tableau contenant toutes les lignes du jeu de résultats PDO.</li>
<li><code>PDOStatement::fetchObject()</code> récupère la ligne suivante et la retourne en tant qu'objet.</li>
<li><code>PDOStatement::fetchColumn()</code> retourne une colonne de la ligne suivante du jeu de résultats PDO.</li>
<li><code>PDOStatement::rowCount()</code> retourne le nombre de lignes affectées par le dernier appel à la fonction.</li>
<li><code>PDOStatement::closeCursor()</code> libère la connexion au serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées. La requête reste dans un état lui permettant d'être de nouveau exécutée. Cette fonction retourne TRUE en cas de succès et FALSE en cas d'erreur.</li></ul>
<p>La méthode <code>PDOStatement::fetch()</code> de la classe PDOStatement peut prendre en paramètre une constante de la classe PDO :
</p>
<ul><li><code>PDO::FETCH_ASSOC</code> retourne le jeu de résultats sous forme d'un <a href="Tableau_associatif" title="Tableau associatif">tableau associatif</a>, dont la clé est le nom de colonne.</li>
<li><code>PDO::FETCH_NUM</code> retourne le jeu de résultats sous forme d'un tableau.</li>
<li><code>PDO::FETCH_BOTH</code> retourne le jeu de résultats sous forme d'un tableau ou d'un tableau associatif. C'est le paramètre par défaut.</li>
<li><code>PDO::FETCH_OBJ</code> retourne le jeu de résultats sous forme d'un objet dont les noms de propriétés correspondent aux noms des colonnes.</li></ul>
<dl><dt>Exemples</dt></dl>
<div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$ligne</span> <span class="o">=</span> <span class="nv">$resultats</span><span class="o">-></span><span class="na">fetch</span><span class="p">(</span><span class="nx">PDO</span><span class="o">::</span><span class="na">FETCH_ASSOC</span><span class="p">);</span>
<span class="nv">$ligne</span> <span class="o">=</span> <span class="nv">$resultats</span><span class="o">-></span><span class="na">fetch</span><span class="p">(</span><span class="nx">PDO</span><span class="o">::</span><span class="na">FETCH_NUM</span><span class="p">);</span>
<span class="nv">$ligne</span> <span class="o">=</span> <span class="nv">$resultats</span><span class="o">-></span><span class="na">fetch</span><span class="p">(</span><span class="nx">PDO</span><span class="o">::</span><span class="na">FETCH_BOTH</span><span class="p">);</span>
<span class="nv">$ligne</span> <span class="o">=</span> <span class="nv">$resultats</span><span class="o">-></span><span class="na">fetch</span><span class="p">(</span><span class="nx">PDO</span><span class="o">::</span><span class="na">FETCH_OBJ</span><span class="p">);</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="http://fr2.php.net/manual/fr/pdo.installation.php"><cite style="font-style:normal;">Manual</cite></a> », sur <span class="italique">php.net</span> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2023-05-23" data-sort-value="2023-05-23">23 mai 2023</time>)</small></span>.</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><span class="ouvrage"><span class="noarchive">« <a rel="nofollow" class="external text" href="http://php.net/manual/fr/pdo.drivers.php%3e"><cite style="font-style:normal; color:var(--color-link-red, #d73333);">php.net/manual/fr/pdo.drivers.…</cite></a> »<sup class="">(<a rel="nofollow" class="external text" href="https://web.archive.org/web/*/http://php.net/manual/fr/pdo.drivers.php%3e">Archive.org</a> • <a rel="nofollow" class="external text" href="https://archive.wikiwix.com/cache/?url=http://php.net/manual/fr/pdo.drivers.php%3e">Wikiwix</a> • <a rel="nofollow" class="external text" href="https://archive.is/http://php.net/manual/fr/pdo.drivers.php%3e">Archive.is</a> • <a rel="nofollow" class="external text" href="https://webcache.googleusercontent.com/search?hl=fr&q=cache:http://php.net/manual/fr/pdo.drivers.php%3e">Google</a> • Que faire ?)</sup></span></span>.</span>
</li>
</ol></div>
</div>
<div class="mw-heading mw-heading2"><h2 id="Liens_externes">Liens externes</h2></div>
<style data-mw-deduplicate="TemplateStyles:r194021218">
/* start https://fr.wikipedia.org/ */
.mw-parser-output .autres-projets>.titre{text-align:center;margin:0.2em 0}.mw-parser-output .autres-projets>ul{margin:0;padding:0}.mw-parser-output .autres-projets>ul>li{list-style:none;margin:0.2em 0;text-indent:0;padding-left:24px;min-height:20px;text-align:left;display:block}.mw-parser-output .autres-projets>ul>li>a{font-style:italic}@media(max-width:720px){.mw-parser-output .autres-projets{float:none}}
/* end https://fr.wikipedia.org/ */
</style>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : français">(fr)</abbr> <a rel="nofollow" class="external text" href="http://fr2.php.net/manual/fr/book.pdo.php">Documentation officielle</a></li>
<li><abbr class="abbr indicateur-langue" title="Langue : français">(fr)</abbr> <a rel="nofollow" class="external text" href="http://micmap.org/php-by-example/fr/function/pdo">Tester les fonctions PDO en ligne</a></li></ul>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail des logiciels libres</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la programmation informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2023-05-23" href="https://fr.wikipedia.org/wiki/?title=PHP_Data_Objects&oldid=204542816">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>